home *** CD-ROM | disk | FTP | other *** search
- import java.awt.Color;
- import java.io.DataInputStream;
- import java.io.FilterInputStream;
- import java.io.IOException;
- import java.io.InputStream;
- import java.net.URL;
- import java.net.URLConnection;
-
- public class JMxAsyncRead implements Runnable {
- protected Thread m_ReadThread;
- protected JMxAsyncReadOwner m_Owner;
- protected JMxPlayer m_Player;
- protected String m_Filename = "";
- protected String m_Data = "";
- protected URL m_URL;
-
- public JMxAsyncRead(JMxAsyncReadOwner var1, URL var2, JMxPlayer var3) {
- this.m_Owner = var1;
- this.m_Filename = var2.getFile();
- this.m_URL = var2;
- this.m_Player = var3;
- this.m_ReadThread = new Thread(this, "JMxAsyncRead thread");
- this.m_ReadThread.start();
- }
-
- public boolean Stop() {
- this.m_ReadThread.interrupt();
- return true;
- }
-
- public boolean readHeader(JMxDataInputStream var1) throws IOException {
- int var2 = ((DataInputStream)var1).readUnsignedByte();
- String var3 = var1.readAscii(var2);
- if (!var3.equals("JMPLAYER")) {
- JMxLog.Log(3, "JMxAsyncRead::run -- invalid file format\n");
- ((FilterInputStream)var1).close();
- return false;
- } else {
- var2 = ((DataInputStream)var1).readInt();
- int var4 = ((DataInputStream)var1).readInt();
- int var5 = ((DataInputStream)var1).readInt();
- int var6 = ((DataInputStream)var1).readInt();
- int var7 = ((DataInputStream)var1).readInt();
- int var8 = ((DataInputStream)var1).readInt();
- if (var8 == 0) {
- JMxLog.Log(3, "JMxAsyncRead::run -- invalid file format\n");
- ((FilterInputStream)var1).close();
- return false;
- } else if (Thread.interrupted()) {
- JMxLog.Log(3, "JMxAsyncRead::readHeader -- interrupted\n");
- ((FilterInputStream)var1).close();
- return false;
- } else {
- return true;
- }
- }
- }
-
- public boolean readOptions(JMxDataInputStream var1) throws IOException {
- int var2 = ((DataInputStream)var1).readInt();
- int var3 = ((DataInputStream)var1).readInt();
- ((DataInputStream)var1).skipBytes(var3 * 4);
- if ((var2 = var2 - (4 + var3 * 4)) <= 0) {
- return true;
- } else {
- ((DataInputStream)var1).skipBytes(8);
- var2 -= 8;
- if (var2 <= 0) {
- return true;
- } else {
- var3 = ((DataInputStream)var1).readInt();
- var2 -= 4;
- if (var2 <= 0) {
- return true;
- } else {
- if (var3 > 0) {
- int[] var4 = new int[var3];
-
- for(int var5 = 0; var5 < var3; ++var5) {
- var4[var5] = ((DataInputStream)var1).readInt();
- var2 -= 4;
- if (var2 <= 0 || var3 == var5 + 1) {
- this.m_Player.SetTransitionUsage(var4);
- if (var2 <= 0) {
- return true;
- }
- }
- }
- }
-
- var3 = ((DataInputStream)var1).readInt();
- var2 -= 4;
- if (var2 <= 0) {
- return true;
- } else {
- if (var3 > 0) {
- int[] var15 = new int[var3];
-
- for(int var17 = 0; var17 < var3; ++var17) {
- var15[var17] = ((DataInputStream)var1).readInt();
- var2 -= 4;
- if (var2 <= 0 || var3 == var17 + 1) {
- this.m_Player.SetClassUsage(var15);
- if (var2 <= 0) {
- return true;
- }
- }
- }
- }
-
- int var16 = ((DataInputStream)var1).readInt();
- int var18 = var16 >> 16 & 255;
- int var6 = var16 >> 8 & 255;
- int var7 = var16 & 255;
- this.m_Player.setBackground(new Color(var7, var6, var18));
- var2 -= 4;
- if (var2 <= 0) {
- return true;
- } else {
- ((DataInputStream)var1).skipBytes(var2);
- if (Thread.interrupted()) {
- JMxLog.Log(3, "JMxAsyncRead::readOptions -- interrupted\n");
- ((FilterInputStream)var1).close();
- return false;
- } else {
- return true;
- }
- }
- }
- }
- }
- }
- }
-
- public void run() {
- try {
- URLConnection var1 = this.m_URL.openConnection();
- int var2 = var1.getContentLength();
- if (var2 <= 0 && var2 != -1) {
- JMxLog.Log(3, "JMxAsyncRead::run -- No Content available" + this.m_URL.toString());
- this.m_Owner.ReadComplete(this.m_Filename, 5);
- } else {
- InputStream var3 = var1.getInputStream();
- JMxDataInputStream var4 = new JMxDataInputStream(var3);
- if (!this.readHeader(var4)) {
- this.m_Owner.ReadComplete(this.m_Filename, 4);
- } else if (!this.readOptions(var4)) {
- this.m_Owner.ReadComplete(this.m_Filename, 4);
- } else {
- JObList var5 = new JObList();
- int var6 = ((DataInputStream)var4).readInt();
- int var7 = ((DataInputStream)var4).readInt();
-
- for(int var8 = 0; var8 < var7; ++var8) {
- if (Thread.interrupted()) {
- JMxLog.Log(3, "JMxAsyncRead::run -- interrupted\n");
- ((FilterInputStream)var4).close();
- return;
- }
-
- JMxMedia var9 = JMxMedia.LoadData(var4, this.m_Player);
- if (var9 != null) {
- var5.AddTail(var9);
- }
- }
-
- this.m_Player.SetMediaList(var5);
- this.m_Owner.ReadComplete(this.m_Filename, 2);
- }
- }
- } catch (IOException var11) {
- JMxLog.Log(3, "JMxAsyncRead::run -- catch IO exception\n " + ((Throwable)var11).toString());
- this.m_Owner.ReadComplete(this.m_Filename, 4);
- }
- }
- }
-